package online.takemehand.fx;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;

public class TableViewExample extends Application {

    @Override
    public void start(Stage primaryStage) {

        // 创建一个TableView
        TableView<Person> tableView = new TableView<>();

        // 定义两列
        TableColumn<Person, String> nameColumn = new TableColumn<>("Name");
        TableColumn<Person, Integer> ageColumn = new TableColumn<>("Age");

        // 设置列的单元格工厂，用来从Person对象中获取对应数据
        nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
        ageColumn.setCellValueFactory(new PropertyValueFactory<>("age"));

        // 将列添加到TableView中
        tableView.getColumns().addAll(nameColumn, ageColumn);

        // 准备一些数据
        tableView.getItems().addAll(
                new Person("Alice", 30),
                new Person("Bob", 25),
                new Person("Charlie", 35)
        );

        // 设置场景并显示
        Scene scene = new Scene(tableView, 400, 300);
        primaryStage.setScene(scene);
        primaryStage.setTitle("JavaFX TableView Example");
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

    // 定义一个Person类，用于模拟表格数据
    public static class Person {
        private String name;
        private int age;

        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }

        public String getName() {
            return name;
        }

        public int getAge() {
            return age;
        }
    }
}